package edu.ustb.aur.userpackage;

import com.baomidou.mybatisplus.extension.service.IService;

import javax.sound.midi.VoiceStatus;
import java.util.List;

/**
 * @author ShiZhe
 * @create 2021-11-03 18:50
 */
public interface UserService extends IService<User> {

    /**
     * 新建用户
     * 上链
     *
     * @param user 用户对象
     * @return true or false
     */
    boolean createUser(User user);

    /**
     * 根据用户地址得到user对象
     *
     * @param userAddress 用户hash地址
     * @return user对象
     */
    User findUser(String userAddress);

    /**
     * 根据用户名称得到用户地址
     *
     * @param userName 用户名称
     * @return 用户地址
     */
    String findUserAddressByUserName(String userName);

    /**
     * 资金转出
     * 上链
     *
     * @param userAddress 用户hash地址
     * @param money 金额
     * @return true or false
     */
    boolean transferOut(String userAddress, double money);

    /**
     * 资金转入
     * 上链
     *
     * @param userAddress 用户hash地址
     * @param money 金额
     * @return true or false
     */
    boolean transferIn(String userAddress, double money);

    /**
     * 添加资产hash集合
     *
     * @param userAddress 用户hash地址
     * @param assetId 资产hash地址
     * @return true or false
     */
    boolean addAssetList(String userAddress, String assetId);

    /**
     * 删除资产hash集合
     *
     * @param userAddress 用户hash地址
     * @param assetId 资产hash地址
     * @return true or false
     */
    boolean deleteAssetList(String userAddress, String assetId);

    /**
     * 查询用户涉及的资产集合
     *
     * @param userAddress 用户hash地址
     * @return 用户涉及资产集合
     */
    List<String> findAssetList(String userAddress);

    /**
     * 根据用户名称查询用户是否可以访问
     *
     * @param userAddress 用户地址
     * @return true or false
     */
    boolean findUserLockByUserAddress(String userAddress);

    /**
     * 根据用户名称解锁
     *
     * @param userList 用户地址列表
     */
    void updateUserLockByUserAddressList(List<String> userList);
}
